The present invention relates generally to the field of software application management, and more particularly to version control and restaging software applications within a networked computing environment.
Within a networked computing environment, such as a cloud computing environment various system resources, hardware and software, may be virtualized and dynamically allocated, utilized, and released. Software applications, herein referred to as apps, can be hosted and executed within a networked computing environment via various technologies, such as virtual machines (VMs) and/or software containers (i.e., containers). While a physical or virtualized system can execute containers, various computing environments utilize containers to compliment VMs. In some implementations, one or more software containers can include multiple apps that execute within a VM thereby reducing the number of VMs deployed. Containers provide additional granularity within a VM, such monitoring and controlling the resources utilized by each group of containerized apps. In other implementations, containerized apps can be executed without inclusion within a VM. Containers share a host operating system, which can reduce software licensing costs. In addition, containers utilize fewer resources than a similar number of VMs so resource costs are reduced or more workloads can be supported with the same resources.
Other benefits of containers are that a container provides the bare essentials required to execute an application so containers are more quickly “spun up” or “spun down,” containers encapsulate an application, improving isolation and security, containers are more portable between computing environments, and container virtualization can improve the performance of some applications. For example, the performance of database applications is improved by using block storage, which requires direct access to hardware resources, such as storage devices and networking devices. A container can use the same hardware and host operating system (OS) and bypass a layer of hardware emulation of a hypervisor thereby improving performance of a database application. In addition, the efficiency and portability of containers is useful for agile development and operation (i.e., DevOps) of applications.